package com.zzyl.common.ai;

import com.baidubce.qianfan.Qianfan;
import com.baidubce.qianfan.core.auth.Auth;
import com.baidubce.qianfan.model.chat.ChatResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * AI模型调用器类，用于调用千帆大模型API
 */
@Slf4j
@Component
public class AIModelInvoker {

    //百度AI属性配置
    @Autowired
    private BaiduAIProperties baiduAIProperties;

    //千帆大模型调用器
    public String qianfanInvoker(String prompt) {
        //打印用户输入的提示信息，用于调试
        System.out.println(prompt);
        //创建Qianfan对象，用于与千帆大模型API进行交互
        Qianfan qianfan = new Qianfan(Auth.TYPE_OAUTH, baiduAIProperties.getAccessKey(), baiduAIProperties.getSecretKey());
        //执行聊天完成请求，并获取响应
        ChatResponse response = qianfan.chatCompletion()
                .model(baiduAIProperties.getQianfanModel()) //百度千帆大模型标识（ERNIE-4.0-8K-Preview）
                .addMessage("user", prompt) //聊天内容，用户输入的提示信息
                .temperature(0.8) //采样参数，取值范围[0,1]
                .maxOutputTokens(2000) //模型输出最大长度，取值范围[2, 2048]
                .responseFormat("json_object") //模型输出格式，取值范围：text（文本）、json_object（JSON对象）
                .execute();
        //获取模型返回的结果
        String result = response.getResult();
        //打印模型返回的结果，用于调试
        System.out.println(result);
        //返回模型的结果
        return result;
    }
}